<?php
defined('_JEXEC') or die;

require_once JPATH_COMPONENT.'/controller.php';

/**
 * Registration controller class for Users.
 *
 * @package		Joomla.Site
 * @subpackage	com_users
 * @since		1.6
 */
class UsersControllerRegistration extends UsersController
{
	/**
	 * Method to activate a user.
	 *
	 * @return	boolean		True on success, false on failure.
	 * @since	1.6
	 */
	public function activate()
	{
		$user		= JFactory::getUser();
		$uParams	= JComponentHelper::getParams('com_users');

		// If the user is logged in, return them back to the homepage.
		if ($user->get('id')) {
			$this->setRedirect('index.php');
			return true;
		}

		// If user registration or account activation is disabled, throw a 403.
		if ($uParams->get('useractivation') == 0 || $uParams->get('allowUserRegistration') == 0) {
			JError::raiseError(403, JText::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN'));
			return false;
		}

		$model = $this->getModel('Registration', 'UsersModel');
		$token = JRequest::getVar('token', null, 'request', 'alnum');

		// Check that the token is in a valid format.
		if ($token === null || strlen($token) !== 32) {
			JError::raiseError(403, JText::_('JINVALID_TOKEN'));
			return false;
		}

		// Attempt to activate the user.
		$return = $model->activate($token);

		// Check for errors.
		if ($return === false) {
			// Redirect back to the homepage.
			$this->setMessage(JText::sprintf('COM_USERS_REGISTRATION_SAVE_FAILED', $model->getError()), 'warning');
			$this->setRedirect('index.php');
			return false;
		}

		$useractivation = $uParams->get('useractivation');

		// Redirect to the login screen.
		if ($useractivation == 0)
		{
			$this->setMessage(JText::_('COM_USERS_REGISTRATION_SAVE_SUCCESS'));
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
		}
		elseif ($useractivation == 1)
		{
			$this->setMessage(JText::_('COM_USERS_REGISTRATION_ACTIVATE_SUCCESS'));
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
		}
		elseif ($return->getParam('activate'))
		{
			$this->setMessage(JText::_('COM_USERS_REGISTRATION_VERIFY_SUCCESS'));
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=complete', false));
		}
		else
		{
			$this->setMessage(JText::_('COM_USERS_REGISTRATION_ADMINACTIVATE_SUCCESS'));
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=complete', false));
		}
		return true;
	}

	/**
	 * Method to register a user.
	 *
	 * @return	boolean		True on success, false on failure.
	 * @since	1.6
	 */
	public function step1()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		$dat = JRequest::getVar('jform', array(), 'post', 'array');
		$sess=JFactory::getSession();

		$dat["kidage"]=implode(',',array_filter($dat["kidage"]));
		//unset($dat["kidage1"]);unset($dat["kidage2"]);unset($dat["kidage3"]);unset($dat["kidage4"]);
		$dat["hvorkg"]=implode(',',array_filter($dat["hvorkg"]));
		//unset($dat["hvorkg1"]);unset($dat["hvorkg2"]);unset($dat["hvorkg3"]);unset($dat["hvorkg4"]);

		$sess->set("regs1.data",$dat);

		$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=step2'));
	}
	public function step3()
	{
		$sess=JFactory::getSession();
		$value1=$sess->get('regs1.data');
		
		$db=JFactory::getDbo();
		$db->setQuery("SELECT id FROM #__users WHERE email=".$db->quote($value1['email']));
		$id_user=$db->loadResult();
		
		if(!$id_user)
			jexit("update N/A");
		
		$dat = $_POST;
		$value2=$sess->get('regs2.data');
		$value3=$dat;
		$value5=$sess->get('regs5.data');
		
		$user		= JFactory::getUser($id_user);
		$user->information='weightdown:'.$value1['weightdown'].
		';weekdown:'.$value1['weekdown'].
		';civilstatus:'.$value1['civilstatus'].
		';choicemaker:'.$value1['kidage'].
		';hvorkg:'.$value1['hvorkg'].
		';breakfast:'.$value2["breakfast"].
		';soda:'.$value2["soda"].
		';eatwell:'.$value2["eatwell"].
		';roiloan:'.$value2["roiloan"].
		';meal1:'.$value2["meal1a"].'-'.$value2["meal1b"].
		';meal2:'.$value2["meal2a"].'-'.$value2["meal2b"].
		';meal3:'.$value2["meal3a"].'-'.$value2["meal3b"].
		';meal4:'.$value2["meal4a"].'-'.$value2["meal4b"].
		';meal5:'.$value2["meal5a"].'-'.$value2["meal5b"].
		';diversity:'.$value2["diversity"].
		';cooktime:'.$value2["cooktime"].
		';fav:'.implode(",",array_keys($value2["fav"]))."-".implode(',',$value2["fav"]).
		';allergy:'.$value2["allergy"].
		';meget:'.$value3['meget'].
		';exercise:'.implode(",",array_keys($value3['exercise']))."-".implode(',',$value3['exercise']).
		';omugen:'.$value3['omugen'].
		';workoutinweek:'.implode(",",array_keys($value3['workoutinweek']))."-".implode(',',$value3['workoutinweek']).
		';hvormeget:'.$value3['hvormeget'].
		';motive:'.$value3['motive'].
		';package:'.$value5['basecost'].
		';length:'.$value5['length'].
		';options:'.$value5['options_nam'];
		
		$dat=array( "id" => $user->id,
			"Fornavn" => $user->Fornavn,
			"Efternavn" => $user->Efternavn,
			"name" => $user->name,
			"Alder" => $user->Alder,
			"Højde" => $user->Højde,
			"Vægt" => $user->Vægt,
			"skype" => $user->skype,
			"Mobiltelefon" => $user->Mobiltelefon,
			"email1" => $user->email,
			"email2" => $user->email,
			"information" => $user->information,
			);
		
		$model	= $this->getModel('Profile', 'UsersModel');
		$form = $model->getForm();
		$data = $model->validate($form, $dat);
		if($data===false){
			$this->setMessage($model->getError(), 'warning');
		}
		$dat=$model->save($dat);
		if($dat===false)
			$this->setMessage(JText::sprintf('COM_USERS_PROFILE_SAVE_FAILED', $model->getError()), 'warning');
		else
			$this->setMessage(JText::_('COM_USERS_PROFILE_SAVE_SUCCESS'));
		
		$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=&layout=thankyou'));
	}
	
	public function register()
	{
		// Check for request forgeries.
		//JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$session=JFactory::getSession();
		
		// If registration is disabled - Redirect to login page.
		if(JComponentHelper::getParams('com_users')->get('allowUserRegistration') == 0) {
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=login'));
			return false;
		}
		
		// Initialise variables.
		$app	= JFactory::getApplication();
		$model	= $this->getModel('Registration', 'UsersModel');
		$value1=$session->get('regs1.data');
		/*due to rearrange steps
		$value2_nam=$session->get('regs2.data_nam');
		$value2=$session->get('regs2.data');
		$value3=$session->get('regs3.data');
		$value4=$session->get('regs4.data');
		*/
		$value5=$session->get('regs5.data');
		$params=JComponentHelper::getParams('com_questions');
		$prices=array($params->get("price1"), $params->get("price2"), $params->get("price3"), $params->get("price4"));
		
		// Get the user data.
		$requestData = JRequest::getVar('jform', array(), 'post', 'array');
		
		// Validate the posted data.
		$form	= $model->getForm();
		if (!$form) {
			JError::raiseError(500, $model->getError());
			return false;
		}
		$data	= $model->validate($form, $requestData);
		
		// Attempt to save the data.
		$data['Fornav']=trim($value1['fornavn']);
		$data['Efternavn']=trim($value1['efternavn']);
		$data['Alder']=$value1['alder'];
		$data['Højde']=$value1['hojde'];
		$data['Vægt']=$value1['vagt'];
		$data['Mobiltelefon']=$value1['mobile'];
		$data['skype']=$value1['sky'];
		//$data['id_teacher']=$value4['id_teacher'];
		
		/* bat dau luu parameters 
		$data['information']='weightdown:'.$value1['weightdown'].
		';weekdown:'.$value1['weekdown'].
		';civilstatus:'.$value1['civilstatus'].
		';choicemaker:'.$value1['kidage'].
		';hvorkg:'.$value1['hvorkg'].
		';breakfast:'.$value2["breakfast"].
		';soda:'.$value2["soda"].
		';eatwell:'.$value2["eatwell"].
		';roiloan:'.$value2["roiloan"].
		';meal1:'.$value2["meal1a"].'-'.$value2["meal1b"].
		';meal2:'.$value2["meal2a"].'-'.$value2["meal2b"].
		';meal3:'.$value2["meal3a"].'-'.$value2["meal3b"].
		';meal4:'.$value2["meal4a"].'-'.$value2["meal4b"].
		';meal5:'.$value2["meal5a"].'-'.$value2["meal5b"].
		';diversity:'.$value2["diversity"].
		';cooktime:'.$value2["cooktime"].
		';fav:'.implode(",",array_keys($value2["fav"]))."-".implode(',',$value2["fav"]).
		';allergy:'.$value2["allergy"].
		';meget:'.$value3['meget'].
		';exercise:'.implode(",",array_keys($value3['exercise']))."-".implode(',',$value3['exercise']).
		';omugen:'.$value3['omugen'].
		';workoutinweek:'.implode(",",array_keys($value3['workoutinweek']))."-".implode(',',$value3['workoutinweek']).
		';hvormeget:'.$value3['hvormeget'].
		';motive:'.$value3['motive'].
		';package:'.$value5['basecost'].
		';length:'.$value5['length'].
		';options:'.$value5['options_nam'];
		 ket thuc */
		
		$package=$value5['no'];
		if($package < 1 OR $package > 4)
			$package=2;
		
		$data['package']=$package;
		$data['name']=$data['Fornav']." ".$data['Efternavn'];
		$data['username']=$value1['email'];
		$data['email1']=$value1['email'];
		$data['password1']=$value1['password'];
		
		$return	= $model->register($data);
		
		// Check for errors.
		if ($return === false) {
			// Save the data in the session.
			$app->setUserState('com_users.registration.data', $data);

			// Redirect back to the edit screen.
			$this->setMessage($model->getError(), 'warning');
			$this->setRedirect(JRoute::_('index.php', false));
			//$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration', false));
			return false;
		}
		
		//* chen vao bang user_payment
		$db=JFactory::getDbo();
		$orderno=$session->get('regs5.on');
		
		$db->setQuery("SELECT id FROM #__users WHERE email=".$db->quote($value1['email']));
		$id_user=$db->loadResult();
		$query= "UPDATE #__user_payment
		SET id_user=$id_user,
		phukiens=" .$db->quote($value5['options_nam']). ",
		id_package=$package,
		id_option=" .$value5['basecost']. ",
		total=" .$value5['total_nam']. "
		WHERE id=$orderno";
		$db->setQuery($query);
		$db->query();
		// ket thuc */
		
		$txt="Pakke 3 Møder
1: 60 min. Næste møde om 1 uge
2: 15 min. Næste møde om 1 uge
3: 30 min. Næste møde om 1 uge
4: 15 min. Næste møde om 1 uge
5: 30 min. Næste møde om 1 uge
6: 15 min. Næste møde om 1 uge
7: 30 min. Næste møde om 1 uge
8: 15 min. Næste møde om 2 uger
9: 30 min. Næste møde om 2 uger
10: 15 min. Næste møde om 2 uger - 3 måneder er nået

Møde hver 2. uge herfra. Skiftevis 15/30 min.

Pakke 2 Møder 
1: 60 min. Næste møde om 2 uger
2: 15 min. Næste møde om 2 uger
3: 30 min. Næste møde om 2 uger
4: 15 min. Næste møde om 3 uger
5: 30 min. Næste møde om 3 uger
6: 15 min. Næste møde om 3 uger - 3 måneder er nået

Møde hver 3. uge herfra. Skiftevis 15/30 min.

Pakke 1 og fitness Møder 
1: 60 min. Næste møde om 4 uger
2: 30 min. Næste møde om 4 uger
3: 15 min. Næste møde om 4 uger - 3 måneder er nået

Møde hver 6. uge herfra. Skiftevis 15/30 min.

Indtast noter på kunden her:
";
		$db->setQuery("INSERT INTO #__user_notes (user_id,catid,body,state) VALUES($id_user,7,'".$db->escape($txt)."',1)");
		$db->query();
		
		// Flush the data from the session.
		$app->setUserState('com_users.registration.data', null);
		// Redirect to the profile screen.
		if ($return === 'adminactivate'){
			$this->setMessage(JText::_('COM_USERS_REGISTRATION_COMPLETE_VERIFY'));
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=complete', false));
		} elseif ($return === 'useractivate') {
			$this->setMessage(JText::_('COM_USERS_REGISTRATION_COMPLETE_ACTIVATE'));
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=complete', false));
		} else {
			$this->setMessage(JText::_('COM_USERS_REGISTRATION_SAVE_SUCCESS'));
			$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=step3', false));
			//$this->setRedirect(JRoute::_('index.php?option=com_users&view=login', false));
		}

		return true;
	}

	/*[V] save session for 2nd form*/
	function step2(){
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		$dat = JRequest::getVar('jform', array(), 'post', 'array');
		$sess=JFactory::getSession();
		$sess->set("regs2.data",$dat);
		$sess->set("regs2.data_nam",$_POST);

		$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=step5'));
	}

	/*[V] save teacherid & book time for 4th form*/
	function step4(){
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		$dat = JRequest::getVar('jform', array(), 'post', 'array');
		$session=JFactory::getSession();
		$value1=$session->get('regs1.data');
		extract($value1);
		$value5=$session->get('regs5.data');
		
		$params=JComponentHelper::getParams('com_questions');
		$prices=array($params->get("price1"), $params->get("price2"), $params->get("price3"), $params->get("price4"));
		
		$session->set("regs4.data",$dat);
		
		/* get new user using regs1.data */
		$query= "SELECT id, name FROM #__users WHERE email='$email'";
		$db=JFactory::getDBO();
		$id_user=$db->setQuery($query)->loadObject()->id;
		$name=$db->setQuery($query)->loadObject()->name;
		/* ket thuc */
		
		/* bat dau chen vao calendar */
		$id_teacher=$dat['id_teacher'];
		$subject=$name;
		$description=$name;
		$startime=$dat['day_meeting'].$dat['from_meeting'];
		$tmp=strtotime($startime);
		if($tmp < strtotime(date("Y-m-d",$tmp)." 23:30"))
			$endtime=date("Y-m-d H:i",strtotime($startime." +1 hour"));
		else
			$endtime=$startime;
	if($dat['day_meeting']!=""){
		$query="INSERT #__jqcalendar(id_teacher,id_student,Subject,Description,StartTime,EndTime,Color,type)VALUES($id_teacher
		,$id_user,'$subject','$description','$startime','$endtime','1',1)";
		$db->setQuery($query);
		$db->query();
	}
		/* ket thuc */

		/* udate id_teacher */
		$query="UPDATE #__users SET id_teacher=".$id_teacher." WHERE id=".$id_user." ";
		$db->setQuery($query);
		$db->query();
		/* ket thuc */
		
		//[V] mail for student
		$mailform="FitPlan.dk";
		$from="FitPlan.dk";
		$subject="Register";
		//lay ten giao vien
		$query= "SELECT name,email FROM #__users WHERE id=".$id_teacher."";
		$teacher=$db->setQuery($query)->loadObject();
		$name_teacher=$teacher->name;
		//ket thuc
		if($weekdown=="1")
			$weekdown="Vægttab";
		else
			$weekdown="Muskelforøgelse";
		
		$content="
<style type='text/css'>
.head{padding: 10px; font-family: Calibri;font-size: 18px;font-weight: 400;font-style: italic;}
</style>
	Kære $fornavn $efternavn<br><br>

	Velkommen til FitPlan.dk<br><br>

	Vi ser frem til et godt samarbejde, og håber du bliver glad og tilfreds med vores ydelser.<br><br>

	<div class='head'>Skype</div><br>

	VIGTGT: Kommunikationen mellem dig og din vejleder sker via Skype. Såfremt du ikke har en Skype konto i forvejen, skal du oprette en <a href='https://login.skype.com/account/signup-form?return_url=https%3A%2F%2Fsecure.skype.com%2Faccount%2Flogin'>her</a>. Du bedes have dit Skype Id klar til jeres første webmøde.<br><br>

	Du kan nemt afholde webmøderne over computer, mobiltelefon eller tablet. Til mobiltelefon og tablet skal du downloade Skype app’en, ved at søge på ”Skype” på Google Play eller App Store.<br><br>

	<div class='head'>Vejleder</div><br>

	Du har valgt $name_teacher som den vejleder, der skal følge dig fra start til dit mål.<br><br>

	Dit første webmøde med $name_teacher er <b>d. $startime</b>, så du bedes være online via Skype der. Såfremt du er forhindret i mødet, bedes du orientere kundeservice om dette via <a href='mailto:kundeservice@fitplan.dk'>kundeservice@fitplan.dk</a> eller via tlf. +45 44242454 – dette skal ske minimum 12 timer inden mødetidspunktet.<br><br>

	<div class='head'>Hjælpe app</div><br>

	VIGTIGT: Forud for mødet bedes du downloade den hjælpe app, vejlederen skal bruge for at følge dig hver dag. Dette gøres ved at søge på ”Fitplan app” på Google Play til android, og App Store til iPhone.<br><br>
	Har du nogle spørgsmål eller andet, så kontakt venligst vores kundeservice.<br><br>

		Med venlig hilsen  <br><br>

		FitPlan ApS <br>
		Bellahøjvej 129 st. <br>
		DK-2720 Vanløse <br>

		<a href='mailto:kundeservice@fitplan.dk'>kundeservice@fitplan.dk</a><br>
		Tlf.: +45 44 24 24 54 <br><br>
		<img src='http://fitplan.server1881383095.internet-server.dk/templates/fitplan/src/images/imgLogo.png'/>
		";
		
		$mail=JFactory::getMailer();
		$mail->isHtml(true);
		$mail->sendMail($mailform, $from, $email, $subject, $content);
		//ket thuc

		//[V] SMS to student
		if(strpos($mobile, "+45") !== 0 AND strpos($mobile, "45") !== 0)
			$mobile="45".$mobile;
		//end force countrycode
		require_once 'mm_apiclient.class.php';	
		// Instantiate an API client object
$MM_Connector = new MM_Connector(
'8f07abd5-7d38-408e-9b32-75150a1de49a', // Found at the top of the documentation page
'https://admin.textmanager.dk' // Server root address
//'http://mywebsite.com/example/messagestatus' // Optional for status callbacks
);
	$MM_Connector->addMessage(new MM_Message(
"Kære ".$fornavn.".

Velkommen til FitPlan.

For at kommunikere med din vejleder, skal du have en Skype konto. Hvis du ikke har en i forvejen, kan du oprette en her: www.skype.dk

For at kunne modtage spørgsmål via vores unikke FitPlan app, skal du downloade app'en her:

Til Android: https://play.google.com/store/apps/details?id=com.gotakovn.fitplan

Til iPhone (IOS): https://itunes.apple.com/dk/app/fitplan/id797577807?mt=8

Har du nogle spørgsmål eller andet, er du meget velkommen til at kontakte kundeservice på tlf. +4544242454 eller på mail kundeservice@fitplan.dk

Med venlig hilsen 
FitPlan ApS", // Message text
	array($mobile), // Msisdn (phonenumber with countrycode) for the receiver
	'fitplan.dk')); // The sendername. This could be a phonenumber or your company name
	$success = $MM_Connector->send();
	if($success)
		$MM_Connector->addList($mobile, $fornavn." ".$efternavn);
/*
	if(!$success)
	{
	print_r($MM_Connector->getError());die;
	}
//*/

		//[V] mail for teacher
		$mailform="FitPlan.dk";
		$from="FitPlan.dk";
		$subject="Register";
		$name= $fornavn." ".$efternavn;

		if(!$civilstatus)
			$civilstatus="Single";
		else
			$civilstatus="Samlevende";

		$kids=count(explode(",", $kidage));
		$hvorkg=explode(",", $hvorkg);
		$hvorkg1=isset($hvorkg[0]) ? $hvorkg[0] : "";
		$hvorkg2=isset($hvorkg[1]) ? $hvorkg[1] : "";
		$hvorkg3=isset($hvorkg[2]) ? $hvorkg[2] : "";
		$hvorkg4=isset($hvorkg[3]) ? $hvorkg[3] : "";
		
		if($value5['basecost']==$prices[0])
			$package="Small";
		else if($value5['basecost']==$prices[1])
			$package="Medium";
		else if($value5['basecost']==$prices[2])
			$package="Large";
		else
			$package="Fitness";
		
	$body="
	Hej $name_teacher<br>
	Du har fået en booking d. $startime<br><br>
	<b>Personlige oplysninger:</b><br><br>
	Navn: $name<br>
	Alder: $alder<br>
	Højde: $hojde<br>
	Vægt: $vagt<br>
	Ønsker: $weekdown<br>
	Hvor mange kg: $weightdown<br><br>

	Mobiltelefon: $mobile<br>
	Skype id: $sky<br>
	E-mail: $email<br><br>
	
	Din civilstatus: $civilstatus<br>
	Antal børn: $kids<br><br>
	
	Alder på barn $kidage<br><br>

	Delmål:<br>
	1. måned: $hvorkg1<br>
	2. måned: $hvorkg2<br>
	3. måned: $hvorkg3<br>
	4. måned: $hvorkg4<br><br>

	<b>Pakkevalg</b><br><br>
	Kunden har købt: $package<br><br>

	Med venlig hilsen<br><br>

	Angela S. Juhlin<br><br>

	Chefvejleder <br><br>

	Mail : <a href='mailto:asj@fitplan.dk'>asj@fitplan.dk</a><br>
	Skypekonto: fitplan-angela<br>
	Telefonnummer: 60 20 56 65<br><br>

	<img src='http://fitplan.server1881383095.internet-server.dk/templates/fitplan/src/images/imgLogo.png'/>
	";

	$mail=JFactory::getMailer();
	$mail->isHtml(true);
	$mail->sendMail($mailform, $from, $teacher->email, $subject, $body);
	// ket thuc

	$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=step4'));
	}

	/*[V] save package, course, options, coupon for 5th form*/
	function step5(){
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		$dat = JRequest::getVar('jform', array(), 'post', 'array');
		$sess=JFactory::getSession();
		$sess->set("regs5.data",$dat);
		
		$this->setRedirect(JRoute::_('index.php?option=com_users&view=registration&layout=checkout', false));
		//$this->setRedirect(JRoute::_('index.php?option=com_users&task=registration.register&options='.$_POST['1'].''));
	}
}